Type signature "Maybe a" doesn't like "Just [Event]"

Posted by sisif on Stack Overflow See other posts from Stack Overflow or by sisif
Published on 2010-05-24T08:56:12Z Indexed on 2010/05/24 19:21 UTC
Read the original article Hit count: 163

Filed under:
|
|

I'm still learning Haskell and need help with the type inference please!

Using packages SDL and Yampa I get the following type signature from FRP.Yampa.reactimate:

(Bool -> IO (DTime, Maybe a))

and I want to use it for:

myInput :: Bool -> IO (DTime, Maybe [SDL.Event])
myInput isBlocking = do
    event <- SDL.pollEvent
    return (1, Just [event])
...
reactimate myInit myInput myOutput mySF

but it says

Couldn't match expected type `()'
       against inferred type `[SDL.Event]'
  Expected type: IO (DTime, Maybe ())
  Inferred type: IO (DTime, Maybe [SDL.Event])
In the second argument of `reactimate', namely `input'
In the expression: reactimate initialize input output process

I thought Maybe a allows me to use anything, even a SDL.Event list? Why is it expecting Maybe () when the type signature is actually Maybe a? Why does it want an empty tuple, or a function taking no arguments, or what is () supposed to be?

© Stack Overflow or respective owner

Related posts about beginner

Related posts about haskell